// 导入node.js的URL模块和fileURLToPath方法，用于处理文件路径
import { fileURLToPath, URL } from 'node:url'
// 导入vite的配置函数
import { defineConfig } from 'vite'
// 导入vue插件，用于vite项目中vue的处理
import vue from '@vitejs/plugin-vue'
// 导入自动导入功能及其ElementPlus解析器，用于自动导入Vue组件和ElementPlus
import AutoImport from 'unplugin-auto-import/vite'
import Components from 'unplugin-vue-components/vite'
import { ElementPlusResolver } from 'unplugin-vue-components/resolvers'
// 导入eslint插件，用于在vite项目中集成eslint
import eslintPlugin from 'vite-plugin-eslint'

// Vite配置入口
// 该函数用于定义Vite项目的配置对象
export default defineConfig({
  // 插件配置
  plugins: [
    // Vue插件，用于Vite对Vue的支持
    vue(),
    // 自动导入插件，用于自动导入ElementPlus等库的功能和组件
    AutoImport({
      resolvers: [ElementPlusResolver()] // ElementPlus解析器，帮助自动导入ElementPlus组件
    }),
    // 组件按需加载插件，提高项目打包效率和加载速度
    Components({
      resolvers: [ElementPlusResolver()] // 同样使用ElementPlus解析器
    }),
    // ESLint插件，确保项目代码风格一致性
    eslintPlugin({
      cache: false,
      // 指定需要进行ESLint检查的文件范围
      include: [
        'src/**/*.js',
        'src/**/*.vue',
        'src/**/*.jsx',
        'src/*.js',
        'src/*.vue'
      ]
    })
  ],
  // 路径别名配置
  resolve: {
    alias: {
      // 将'@'符号映射到项目的src目录，简化了文件路径的书写
      '@': fileURLToPath(new URL('./src', import.meta.url))
    }
  },
  // 开发服务器配置
  server: {
    open: false, // 启动项目时，不自动打开浏览器
    hmr: true, // 开启热模块替换，提高开发效率
    port: 8075 // 服务器监听的端口号
  }
})
